package cn.miju.ser.common.rocketmq;

/**
 * <pre>
 * RocketMQ 延迟消息等级
 * 支持延迟时间：DelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
 * 对应支持延迟时间
 * </pre>
 *
 * @author zhuming
 * @version 1.0.0
 * @since 2023-03-11 15:06
 */
public enum DelayLevel {
    /**
     * 延迟1秒
     */
    DELAY_1_SECOND(1, 1),
    /**
     * 延迟5秒
     */
    DELAY_5_SECOND(2, 5),
    /**
     * 延迟10秒
     */
    DELAY_10_SECOND(3, 10),
    /**
     * 延迟30秒
     */
    DELAY_30_SECOND(4, 30),
    /**
     * 延迟1分钟
     */
    DELAY_1_MINUTE(5, 60),
    /**
     * 延迟2分钟
     */
    DELAY_2_MINUTE(6, 120),
    /**
     * 延迟3分钟
     */
    DELAY_3_MINUTE(7, 180),
    /**
     * 延迟4分钟
     */
    DELAY_4_MINUTE(8, 240),
    /**
     * 延迟5分钟
     */
    DELAY_5_MINUTE(9, 300),
    /**
     * 延迟6分钟
     */
    DELAY_6_MINUTE(10, 360),
    /**
     * 延迟7分钟
     */
    DELAY_7_MINUTE(11, 420),
    /**
     * 延迟8分钟
     */
    DELAY_8_MINUTE(12, 480),
    /**
     * 延迟9分钟
     */
    DELAY_9_MINUTE(13, 540),
    /**
     * 延迟10分钟
     */
    DELAY_10_MINUTE(14, 600),
    /**
     * 延迟20分钟
     */
    DELAY_20_MINUTE(15, 1200),
    /**
     * 延迟30分钟
     */
    DELAY_30_MINUTE(16, 1800),
    /**
     * 延迟1小时
     */
    DELAY_1_HOUR(17, 3600),
    /**
     * 延迟2小时
     */
    DELAY_2_HOUR(18, 7200)
    ;
    /**
     * 延迟等级
     */
    private Integer level;
    /**
     * 延迟时间;单位：秒
     */
    private Integer delayTime;

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }

    public Integer getDelayTime() {
        return delayTime;
    }

    public void setDelayTime(Integer delayTime) {
        this.delayTime = delayTime;
    }

    DelayLevel(Integer level, Integer delayTime) {
        this.level = level;
        this.delayTime = delayTime;
    }
}
